/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package WebServices;

/**
 *
 * @author Usuario
 */

import DataTypes.DataGrupo;
import DataTypes.DataUsuario;
import Hndlr.HndlrGrupo;
import Interfaces.Factory;
import Interfaces.ICrearGrupo;
import enums.enumRol;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.logging.Logger;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.ParameterStyle;
import javax.jws.soap.SOAPBinding.Style;
import javax.xml.ws.Endpoint;
import objetos.Grupo;
import objetos.Rol;

/**
 *
 * @author Jota
 */
@WebService
@SOAPBinding(style = Style.RPC, parameterStyle = ParameterStyle.WRAPPED)

public class CtrlAgregarModeradorWS {

    
    
    private Endpoint endpoint = null;
    private Logger log = Logger.getLogger(CtrlAgregarModeradorWS.class.getName());

    
    
    public void publicar() {
        Propiedades propiedades = Propiedades.getInstance();
        String nomCtrl = "CtrlAgregarModerador";
        String camino = "http://" + propiedades.getServer() + ":" + propiedades.getPuerto() + "/" + nomCtrl;
        log.info("publicando el endpoint "+nomCtrl);
        endpoint = Endpoint.publish(camino, this);
        log.info("Endpoint "+nomCtrl+" publicado en " + camino);
    }
    
       @WebMethod(exclude = true)
    public Endpoint getEndpoint() {
        return endpoint;
    }
 
       @WebMethod
    public void agregarModeradorWS( @WebParam(name = "nomGrupo") String nomGrupo,@WebParam(name = "mailUsr")String mailUsr) {
        //PRE: El usuario es un PARTICIPANTE del grupo "nomGrupo"
        
        HndlrGrupo hGrupo = HndlrGrupo.getInstance();
        Grupo gr = hGrupo.obtenerGrupo(nomGrupo);
        Rol r = gr.obtenerRol(mailUsr);
        r.setRolUsr(enumRol.MODERADOR);
        
    }
    
   @WebMethod
public DataGrupo[] listarGrupos() {
        
        ICrearGrupo ctrlGrupo = Factory.getInstance().getCrearGrupos();
        ArrayList<DataGrupo> listG = ctrlGrupo.listarGrupos();
        Iterator<DataGrupo> it = listG.iterator();
        int tamanio = listG.size();
        DataGrupo [] datG = new DataGrupo[tamanio];
        int i = 0 ;
        while(it.hasNext()){
            
            datG[i] = it.next();
            i++;
        }
        return datG;
    }
    
   @WebMethod
    public DataUsuario[] listarDusuariosGrupo(@WebParam(name = "nomGrupo")String nomGrupo){
        
        ArrayList<DataUsuario> lista = new ArrayList<DataUsuario>();
        
        HndlrGrupo hGrupo = HndlrGrupo.getInstance();
        ArrayList<Rol> usr = hGrupo.obtenerGrupo(nomGrupo).getUsr();
        Iterator<Rol> itera = hGrupo.obtenerGrupo(nomGrupo).getUsr().iterator();
        int tam = usr.size();
        
        DataUsuario [] dlis = new DataUsuario[tam];
        
        int i = 0;
        while (itera.hasNext()){
            
            DataUsuario du = itera.next().getUsr().getDusuario();
            dlis[i] = du;
            i++;
            
        }
        
        return dlis;
    }
}
